"""
@author: xxw
@file: 07.python中的下划线.py
@time: 2023/5/18 14:51
"""
# 以单下划线开头的变量 -- 保护成员、保护属性
# 以双下划线开头的变量 -- 私有成员、私有属性

# 保护成员和私有成员在模块导入的时候，是不能以from xx import * 这种方式导入

class Parent:
    """
    this is class parent
    method:
    show
    """

    tmp = "tmp"
    _min = 0
    __max = 10

    def __init__(self):
        self.name = "sc"
        self._sex = "fmale"
        self.__age = 18

    def __make(self):
        print("这是一个私有方法")

    def show(self):
        print(f"age is {self.__age}")
        print(f"max is {self.__max}")
class Child(Parent):
    def show(self):
        print(f"max is {self.__max}")
c1 = Child()
# c1.show()
p = Parent()
# print(p.__max)
p.show()
print(p.__dict__)
print(Parent.__dict__)
print(p._Parent__max)
# python中的私有属性是一种伪私有,它只是在解释器运行期间，将双下划线开头的私有成员换了个变量名
# __max--> _Parent__max

# 双下划线开头，双下环线结尾的变量  内置变量

print(dir(p))
# 内置属性及其功能
# __dict__   查看对象空间
# __name__   对象的名字
# __doc__    文档字符串
# __bases__  查看父类构成
# __class__  查看对象属于哪个类
# __module__  查看当前所在模块

def func1():
    pass
a = func1
print(a.__name__)